subroutine check_react_list(cunit)
  use param
  use label_data_param,only:obj_type
  use label_data_param,only:n_obj_type
  use react_data_param,only:react_type
  use react_data_param,only:n_react_type
  use geom_data_param,only:geom_obj
  use geom_data_param,only:n_geom_obj
  use sink_data_param,only:sink_type
  use sink_data_param,only:n_sink_type
  use group_param,only:n_react_group
  implicit none

  integer,intent(in) :: cunit
  
  integer :: i,j,k,n,in1,in2,in3,pos1,pos2
  character(len=len_linebuf) :: str

  if (n_react_group.eq.0) return

  in1=1
  in2=2
  in3=3

  call log_msg1(cunit,"")
  call log_msg1(cunit,"Involved react groups for each derived type")
  call log_msg1(cunit,"")

  call log_msg1_indent(cunit,in1,&
       "> List of react_group for dissociation of each object")
  do i=1,n_obj_type
     pos1=0

     pos2=pos1+4
     write(str(pos1+1:pos2),'("[",i2.2,"]")') i
     pos1=pos2

     pos2=pos1+11
     write(str(pos1+1:pos2),'(1x,a10)') obj_type(i)%name
     pos1=pos2

     n=obj_type(i)%n_diss_react_group
     pos2=pos1+5
     write(str(pos1+1:pos2),'(1x,"(",i2.2,")")') n
     pos1=pos2

     do j=1,n
        pos2=pos1+3
        write(str(pos1+1:pos2),'(1x,i2)') &
             obj_type(i)%diss_react_group(j)
        pos1=pos2
     end do

     call log_msg1_indent(cunit,in1,str(1:pos2))
  end do

  call log_msg1(cunit,"")
  call log_msg1_indent(cunit,in1,&
       "> List of react_group for escaping &
       the surfaces of each object")
  do i=1,n_obj_type
     pos1=0

     pos2=pos1+4
     write(str(pos1+1:pos2),'("[",i2.2,"]")') i
     pos1=pos2

     pos2=pos1+11
     write(str(pos1+1:pos2),'(1x,a10)') obj_type(i)%name
     pos1=pos2

     n=obj_type(i)%n_free_react_group
     pos2=pos1+5
     write(str(pos1+1:pos2),'(1x,"(",i2.2,")")') n
     pos1=pos2

     do j=1,n
        pos2=pos1+3
        write(str(pos1+1:pos2),'(1x,i2)') &
             obj_type(i)%free_react_group(j)
        pos1=pos2
     end do
     
     call log_msg1_indent(cunit,in1,str(1:pos2))
  end do

  call log_msg1(cunit,"")
  call log_msg1_indent(cunit,in1,&
       "> List of react_group for reaction of react_type")
  do i=1,n_react_type
     pos1=0

     pos2=pos1+8
     write(str(pos1+1:pos2),'("[",i6.6,"]")') i
     pos1=pos2

     pos2=pos1+11
     write(str(pos1+1:pos2),'(1x,a10)') &
          obj_type(react_type(i)%obj1)%name          
     pos1=pos2

     pos2=pos1+11
     write(str(pos1+1:pos2),'(1x,a10)') &
          obj_type(react_type(i)%obj2)%name
     pos1=pos2

     n=react_type(i)%n_react_group
     pos2=pos1+5
     write(str(pos1+1:pos2),'(1x,"(",i2.2,")")') n
     pos1=pos2
     do j=1,n
        pos2=pos1+3
        write(str(pos1+1:pos2),'(1x,i2)') &
             react_type(i)%react_group(j)
        pos1=pos2
     end do

     call log_msg1_indent(cunit,in1,str(1:pos2))
  end do

  call log_msg1(cunit,"")
  call log_msg1_indent(cunit,in2,&
       "> List of react_group for &
       sources of geometric object")
  do i=1,n_geom_obj
     pos1=0

     pos2=pos1+4
     write(str(pos1+1:pos2),'("[",i2.2,"]")') i
     pos1=pos2

     n=geom_obj(i)%n_diss_react_group
     pos2=pos1+5
     write(str(pos1+1:pos2),'(1x,"(",i2.2,")")') n
     pos1=pos2

     do j=1,n
        pos2=pos1+3
        write(str(pos1+1:pos2),'(1x,i2)') &
             geom_obj(i)%diss_react_group(j)
        pos1=pos2
     end do
     
     call log_msg1_indent(cunit,in1,str(1:pos2))
  end do

  call log_msg1(cunit,"")
  call log_msg1_indent(cunit,in2,&
       "> List of react_group for sink_type")
  do i=1,n_sink_type
     pos1=0

     pos2=pos1+4
     write(str(pos1+1:pos2),'("[",i2.2,"]")') i
     pos1=pos2

     pos2=pos1+11
     write(str(pos1+1:pos2),'(1x,"geom_id=",i2)') sink_type(i)%gid
     pos1=pos2

     pos2=pos1+3
     write(str(pos1+1:pos2),'(1x,"+",1x)')
     pos1=pos2

     pos2=pos1+11
     write(str(pos1+1:pos2),'(1x,a10)') &
          obj_type(sink_type(i)%lid)%name
     pos1=pos2

     n=sink_type(i)%n_react_group
     pos2=pos1+5
     write(str(pos1+1:pos2),'(1x,"(",i2.2,")")') n
     pos1=pos2

     do j=1,n
        pos2=pos1+3
        write(str(pos1+1:pos2),'(1x,i2)') &
             sink_type(i)%react_group(j)
        pos1=pos2
     end do
     
     call log_msg1_indent(cunit,in1,str(1:pos2))
  end do

  return

end subroutine check_react_list
